
import 'package:location_test/app/domain/repositories/settings_repository.dart';
import '../datasources/local/storage_util.dart';

// 同样，这个类也 "实现" 了 ISettingsRepository 接口，做出了承诺。
class SettingsRepositoryImpl implements ISettingsRepository {
  // 它依赖于一个 "存储员工" (_storageService) 来完成实际的读写工作。
  final StorageService _storageService;

  // 构造函数，由 HR(GetX) 注入 StorageService。
  SettingsRepositoryImpl(this._storageService);

  @override
  String getMqttBroker() {
    // UI层调用这个方法时，它只关心“获取MQTT地址”。
    // 而这个方法内部，则将这个业务需求翻译成了技术操作：
    // “从存储服务中读取一个 key 为 'mqtt_broker' 的字符串”。
    return _storageService.getString('mqtt_broker');
  }

  @override
  Future<void> saveMqttBroker(String address) {
    // 同样，将“保存地址”这个业务需求，翻译成具体的存储操作。
    return _storageService.setString('mqtt_broker', address);
  }

  @override
  int getSendInterval({int defaultValue = 5}) {
    // 提供一个更健壮的接口，如果没存过，就返回一个安全的默认值。
    return _storageService.getInt('send_interval', defaultValue: defaultValue);
  }

  @override
  Future<void> saveSendInterval(int interval) {
    return _storageService.setInt('send_interval', interval);
  }
}